学习python后,一开始用openpyxl操作excel,最近一直在使用研究xlwings这个功能强大的excel操作库,一开始用就爱不释手。 操作excel一直有一个痛点,那就是excel工作表的隐藏和取消隐藏。如果要隐藏的工作表很少,那就没必要用程序了。可是你可以想象一下,如果要隐藏和取消隐藏的工作表有5个以上,而且每个月,每周,甚至是每天都要重复这样的操作,会是怎样一个机械劳动的痛苦过程。 我一开始想用xlwings调用vba的方法实现批量隐藏,网上查了一些资料看得头大。后来想,如果还有用vba的方法,还学个毛的python,还是尽量少用混合开发(本人看法)。 然后,我就开始满网搜索python批量实现隐藏工作表的方法,重点是搜索xlwings有没有这种方法,结果硬是没搜到了。 难道号称强大的xlwings竟然没有批量隐藏sheet的方法吗?这对学习的热情是个打击。 当我回过头去看vba实现sheet批量隐藏的代码时候,忽然灵光一闪,把vba的代码在sublime中开始测试。 第一遍,没对象 第二遍,没对象 ………… 忽然,我成功了。 废话了这么多,开始上代码! 先看一眼要操作的工作簿 xlwings隐藏和取消隐藏工作表
import xlwings as xw
def hid_sheet():
wb=xw.books['隐藏测试.xlsx']
for sheet in wb.sheets: #wb.sheets工作簿的所有工作表
#把名字不是Sheet1的工作表都隐藏
if sheet.name!='Sheet1':
sheet.api.visible=False
def unhid_sheet():
wb=xw.books['隐藏测试.xlsx']
for sheet in wb.sheets:
sheet.api.visible=True
if __name__ == '__main__':
#hid_sheet()
unhid_sheet()
可以把隐藏和取消隐藏的代码分别封装,来回梭哈。 ———————————————我是分割线————————————————————————— 总结: 该方法(应更)是xlwings调用win32com的api 主要的方法就是sheet.api.visible=True/False 需要的朋友拿去,代码还有很改进空间,比如用app方式打开工作簿,甚至创建个类。
|